new function() {
  
  var keywords =
    "abstract boolean break byte case catch char class const continue debugger default delete do double "+
    "else enum export extends final finally float for function goto if implements import in instanceof int "+
    "interface long native new package private protected public return short static super switch synchronized "+
    "this throw throws transient try typeof var void volatile while with true false prototype";
  
  this.patterns = [
    { regex: Quode.JSH.util.regex.multiLComment, css: "comment" },
    { regex: Quode.JSH.util.regex.singleLComment,css: "comment" },
    { regex: Quode.JSH.util.regex.singleQString, css: "string" },
    { regex: Quode.JSH.util.regex.doubleQString, css: "string" },
    { regex: Quode.JSH.util.regex.number, css: "number" },
    { regex: new RegExp("/[^/\\r\\n\\\\]*(\\\\.[^/\\r\\n\\\\]*)*/\\w*"),css: "regex" },
    { regex: new RegExp("[\\\\,?;.:!<>&|^/+*%-]"),css: "operator" },
    { regex: new RegExp("[(){}\\][=]+"),css: "operator" },
    { regex: Quode.JSH.util.regex.keywords(keywords),css: "keyword" }
  ];
  
  Quode.JSH.language.register(this, ["js", "jscript", "javascript"]);
};


